package com.example.demo.day0304;

public class DemoThread1 {
    public static void main(String[] args) {
        TestRun run0 = new TestRun();
        TestRun run1 = new TestRun();

        Thread t0 = new Thread(run0);
        Thread t1 = new Thread(run1);


        /**
         * 线程的优先级，就是那个线程有较大个概率被执行
         * 优先级是用数组1-10表示，数字越大优先级越高
         */
        t0.setName("t0");//设置线程的名称
        t1.setName("t1");
//        t0.setPriority(1);
//        t1.setPriority(10);//设置线程的优先级
        t0.start();
        t1.start();
        System.out.println(t0.getPriority());//获取线程的优先级，默认优先级是5



        System.out.println(t0.getName());
        System.out.println(t1.getName());//获取线程的名称，如果没有给线程取名，会得到默认的名称



        System.out.println("===================1");
        System.out.println(t1.isAlive());//判断当前线程是否存活，返回布尔类型的值
        System.out.println("===================2");
        t1.stop();//强制停止此线程，强制生命周期结束
        System.out.println(t1.isAlive());
//        try {
//            t0.join();//调用线程t0的join方法，进程的其他线程将被阻塞，直到t0线程执行完为止
//            //join方法的作用是阻塞
//        } catch (InterruptedException e) {
//            e.printStackTrace();
//        }
        System.out.println("===================3");

    }
}
class TestRun implements Runnable{
    int count = 0;
    public void run() {
        System.out.println(Thread.currentThread().getName() + "Runnable多线程运行的代码");//Thread.currentThread().getName获取线程的名称
        for (int i = 0;i < 5;i++){
//            try {
//                Thread.sleep(1000);//当前线程睡眠1000ms
//                //相当于当前循环每隔一千毫秒执行一次，可减慢程序的运行速度
//            } catch (InterruptedException e) {
//                e.printStackTrace();
//            }
//            if (i % 2 ==0){
//                Thread.yield();//线程让步，在同优先级情况下，让其他线程先执行
//                //若同优先级没有其它线程，忽略此方法
//            }
            count++;
            System.out.println(Thread.currentThread().getName() +  "这是Runnable多线程运行的代码" + count);
        }
    }
}